package reflect;

import java.util.Scanner;

/**
 * 反射机制实例化对象
 */
public class ReflectDemo2 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        /*
        获取一个类的类对象主要方式:
        1:类名.class
        例如:
        Class cls = String.class

        Class cls = int.class
        基本类型获取类对象方式只有上述这一种

        2:对象.getClass()
        例如:
        String s = "hello";
        Class cls = s.getClass();

        3:Class.forName("类的完全限定名")   类的完全限定名：包名.类名
        例如:
        Class cls = Class.forName("java.lang.String");
        4:ClassLoader.loadClass("类的完全限定名")
        例如:
        Class cls = ClassLoader.getSystemClassLoader().loadClass("java.lang.String");
         */

        //获取String的类对象，用于了解String的相关信息
//        Class cls = String.class;
//        Class cls = ArrayList.class;
//        Class cls = FileInputStream.class;

//        Class cls = Class.forName("java.lang.String");
//        Class cls = Class.forName("java.util.ArrayList");
//        Class cls = Class.forName("java.io.FileInputStream");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个类名：");
        String classname = scanner.nextLine();
        Class cls = Class.forName(classname);
        /*

         */
        Object obj = cls.newInstance();//相当于 Object obj = new Person();
        System.out.println(obj);
    }
}
